
const p = {
    kind: '禽类',
    fly(){
        console.log(`${this.kind}动物大都是可以飞的`);
    }
}

const x = Object.create(p, {
    name: { value: '凤', enumerable: true },
    gender: { value: '雄', enumerable: false }
});

console.log( x.kind, x.name, x.gender );
x.fly();

// Object.prototype.hasOwnProperty(prop)
// 作用: 判断指定属性(prop)是否时当前对象所自有的
// 返回: 仅当指定属性是当前对象自有时返回 true
console.log( x.hasOwnProperty( 'kind' ) );
console.log( x.hasOwnProperty( 'name' ) );
console.log( x.hasOwnProperty( 'gender' ) );
console.log( x.hasOwnProperty( 'fly' ) );

console.log( '- '.repeat(20) );

// Object.prototype.propertyIsEnumerable(prop)
// 作用: 判断当前对象的指定属性(prop)是否可枚举 (指定属性必须是在当前对象自有的才可以进一步判断)
// 返回: 仅当当前对象的指定属性可以被枚举时返回 true
console.log( x.propertyIsEnumerable( 'kind' ) ); // false
console.log( x.propertyIsEnumerable( 'name' ) ); // true
console.log( x.propertyIsEnumerable( 'gender' ) ); // false
console.log( x.propertyIsEnumerable( 'fly' ) ); // false